home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power Programmierung
/
Power-Programmierung (Tewi)(1994).iso
/
magazine
/
progjour
/
1991
/
04
/
pjltrs.lst
< prev
next >
Wrap
File List
|
1991-06-07
|
8KB
|
171 lines
LISTING 1: TEST PROGRAM SOURCE CODE
; Example program that just prints the current month name and exits.
org 100h
begin: push cs
pop ds
mov ah,2ah ;get current month into register "dh"
int 21h
mov cx,12 ;look up month name in table
mov si,offset months
lp: dec dh
jz gotit
lp1: lodsb
cmp al,'$'
jnz lp1
loop lp
gotit: mov dx,si
mov ah,9 ;now display the month
int 21h
mov ax,4c00h ;and exit
int 21h
months:db 'January$'
db 'February$'
db 'March$'
db 'April$'
db 'May$'
..... etc.
end begin
LISTING 2: SOURCE CODE PRODUCED BY SOURCER
org 100h
7277:0100 OE push cs
7277:0101 1F pop ds
7277:0102 B4 2A mov ah,2Ah; ''
7277:0104 CD 21 int 21h; DOS Services ah=function 2Ah
; get date, cx=year, dx=mon/day
7277:0106 B9 000C mov cx,0Ch
7277:0109 BE 0122 mov si,122h
7277:010C locloop1: ; xref 7277:0115
7277:010C FE CE dec dh
7277:010E 74 07 jz loc3; Jump if zero
7277:0110 loc2: ; xref 7277:0113
7277:0110 AC lodsb ; String [si] to al
7277:0111 3C 24 cmp al,24h; '$'
7277:0113 75 FB jne loc2; Jump if not equal
7277:0115 E2 F5 loop locloop1; Loop if cx > 0
7277:0117 loc3: ; xref 7277:010E
7277:0117 8B D6 mov dx,si
7277:0119 B4 09 mov ah,9
7277:011B CD 21 int 21h; DOS Services ah=function 09h
; display char string at ds:dx
7277:011D B8 4C00 mov ax,4C00h
7277:0120 CD 21 int 21h; DOS Services ah=function 4Ch
; terminate with al=return code
7277:0122 4A 61 6E 75 61 72 data1 db 'January$'; xref 7277:011B
7277:0128 79 24
7277:012A 46 65 62 72 75 61 db 'February$'
7277:0130 72 79 24
7277:0133 4D 61 72 63 68 24 db 'March$'
7277:0139 41 70 72 69 6C 24 db 'April$'
7277:013F 4D 61 79 24 db 'May$'
... etc.
LISTING 3: SOURCE CODE PRODUCED BY DISDOC
org 100h
push cs ;0600:0100 0e
pop ds ;0600:0101 1f
mov ah,2ah ;0600:0102 b42a
int 21h ; ;DOS:2a-get date, DH /
; DL / CX
mov cx,000ch ;0600:0106 b90c00
mov si,0122h ;0600:0109 be2201
b0610c: dec dh ;0600:010c fece
je b06117 ;0600:010e 7407
; ;Jump if equal (ZF=1)
b06110: lodsb ;0600;0110 ac
; ;Load AL with DS:[SI]
cmp al,24h ;($) ;0600:0111 3c24
jne b06110 ;0600:0113 75fb
; ;Jump not equal (ZF=0)
loop b0610c ;0600:0115 e2f5
; ;Dec CX;Loop if CX>0
b06117: mov dx,si ;0600:0117 8bd6
mov ah,09 ;0600:0119 b409
int 21h ;0600:011b cd21
; ;DOS:09-output string
; in DS:DX
db 0b8,00,4c,0cdh ;0600:011d ..L.
db '!January$February$Mar' ;0600:0121
db 'ch$April$May$June$Jul' ;0600:0136
...etc.
LISTING 4: SOURCE CODE PRODUCED BY MASTERKEY
H00100: PUSH CS ;00100 0E
POP DS ;DS_SGMT_CHG ;00101 1F
MOV AH,2Ah ;00102 B42A *
INT 21h ;1-Date ;00104 CD21 !
MOV CX,000Ch ;00106 B90C00 _
MOV SI,0122h ;00109 BE2201 "
H0010C: DEC DH ;0010C FECE _
JZ H00117 ; . . . . . . . . . ;0010E 7407 t
H00110: LODSB ;00110 AC
CMP AL,24h ;00111 3C24 <$
JNZ H00110 ; . . . . . . . . . ;00113 75FB u
LOOP H0010C ;00115 E2F5 _
H00117: MOV DX,SI ;00117 8BD6 _
MOV AH,09h ;00119 B409 _
INT 21h ;1-DisplayString ;0011B CD21 !
MOV AX,4C00h ;0011D B8004C _L
INT 21h ;2-TERMwRtnCde ;00120 CD21 !
DB "January$February$March$April$May" ;00122
... etc.
LISTING 5: SOURCE CODE PRODUCED BY MD86
ORG 00100H
00100:0E EX PUSH CS
00101:1F POP DS
00102:B42ACD21 MSDOS GDATE ;Get system date.
00106:B90C00 MOV CX,OFFSET 0CH
00109:BE2201 MOV SI,OFFSET L0122H
0010C:FECE L010CH DEC DH
0010E:7407 JZ L0117H
00110:AC L0110H LODSB ;Load AL with byt at DS:SI ++.
00111:3C24 CMP AL,'$'
00113:75FB JNZ L0110H
00115:E2F5 LOOP L010CH ;Dec CX, loop if CX<>0.
00117:8BD6 L0117H MOV DX,SI
00119:B409CD21 MSDOS OUTSTR ;Display string at (DS:DX).
0011D:B8004C MOV AX,OFFSET 4C00H
00120:CD21 MSDOS ;Terminate a process.
00122:4A616E756172 L0122H DB 'Januray$'
0012A:466562727561 DB 'February$'
00133:4D6172636824 DB 'March$'
00139:417072696C24 DB 'April$'
0013F:4D617924 ... etc.
LISTING 6: SOURCE CODE PRODUCED BY SNOOP
PUSH CS ;push code segment
0000:0101 POP DS ;pop stack into DS
0000:0102 MOV AH,02AH ;move immediate data to AH
0000:0104 INT 021H ;DOS 2A: get date
0000:0106 MOV CX,OFFSET 0000CH ;move immediate data to CX
0000:0109 MOV SI,OFFSET 00122H ;move immediate data to SI
L0000_010C: DEC DH ;referenced from 0000:0115
0000:010E JE L0000_0117 ;jump short if equal
L0000_0110: LODSB ;referenced from 0000:0113
0000:0111 CMP AL,024H ;compare immediate byte from AL
0000:0113 JNE L0000_0110 ;jump short if not equal
0000:0115 LOOP L0000_010C ;dec CX jump short on CX<>0
L0000_0117: MOV DX,SI ;referenced from 0000:010E
0000:0119 MOV AH,009H ;move immediate data to AH
0000:011B INT 021H ;DOS 09: print string
0000:011D MOV AX,OFFSET 04C00H ;move immediate data to AX
0000:0120 INT 021H ;DOS 4C: terminate a process
0000:0122 DEC DX ;decrement word register by 1
0000:0123 DB 061H ;pop DI,SI,BP,SP,BX,DX,CX,AX
0000:0124 DB 06EH ;output byte [SI] to port DX
0000:0125 JNE L0000_0188 ;jump short if not equal
0000:0127 JB L0000_01A2 ;jump short if carry
0000:0129 DB '$February$March$' ;
0000:0139 DB 'April$May$June$J' ;
...etc.